home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 12.4 KB | 350 lines | [TEXT/MPS ] |
- (*
- File: MIDI.mod
-
- Contains: MIDI Manager Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE MIDI;
-
- IMPORT SYSTEM, Types;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- midiToolNum* = 4; (*tool number of MIDI Manager for SndDispVersion call*)
- midiMaxNameLen* = 31; (*maximum number of characters in port and client names*)
- (* Sound.Time formats *)
- midiFormatMSec* = 0; (*milliseconds*)
- midiFormatBeats* = 1; (*beats*)
- midiFormat24fpsBit* = 2; (*24 frames/sec.*)
- midiFormat25fpsBit* = 3; (*25 frames/sec.*)
- midiFormat30fpsDBit* = 4; (*30 frames/sec. drop-frame*)
- midiFormat30fpsBit* = 5; (*30 frames/sec.*)
- midiFormat24fpsQF* = 6; (*24 frames/sec. longInt format *)
- midiFormat25fpsQF* = 7; (*25 frames/sec. longInt format *)
- midiFormat30fpsDQF* = 8; (*30 frames/sec. drop-frame longInt format *)
- midiFormat30fpsQF* = 9; (*30 frames/sec. longInt format *)
- midiInternalSync* = 0; (*internal sync*)
- midiExternalSync* = 1; (*external sync*)
- (* Port types*)
- midiPortTypeTime* = 0; (*time port*)
- midiPortTypeInput* = 1; (*input port*)
- midiPortTypeOutput* = 2; (*output port*)
- midiPortTypeTimeInv* = 3; (*invisible time port*)
- (* OffsetTimes *)
- midiGetEverything* = $7FFFFFFF; (*get all packets, regardless of time stamps*)
- midiGetNothing* = $80000000; (*get no packets, regardless of time stamps*)
- midiGetCurrent* = $00000000; (*get current packets only*)
-
- (* MIDI data and messages are passed in MIDIPacket records (see below).
- The first byte of every MIDIPacket contains a set of flags
-
- bits 0-1 00* = new MIDIPacket, not continued
- 01* = begining of continued MIDIPacket
- 10* = end of continued MIDIPacket
- 11* = continuation
- bits 2-3 reserved
-
- bits 4-6 000* = packet contains MIDI data
-
- 001* = packet contains MIDI Manager message
-
- bit 7 0* = MIDIPacket has valid stamp
- 1* = stamp with current clock
- *)
- midiContMask* = $03;
- midiNoCont* = $00;
- midiStartCont* = $01;
- midiMidCont* = $03;
- midiEndCont* = $02;
- midiTypeMask* = $70;
- midiMsgType* = $00;
- midiMgrType* = $10;
- midiTimeStampMask* = $80;
- midiTimeStampCurrent* = $80;
- midiTimeStampValid* = $00;
- (* MIDIPacket command words (the first word in the data field for midiMgrType messages) *)
- midiOverflowErr* = $0001;
- midiSCCErr* = $0002;
- midiPacketErr* = $0003;
- (*all command words less than this value are error indicators*)
- midiMaxErr* = $00FF;
- (* Valid results to be returned by readHooks *)
- midiKeepPacket* = 0;
- midiMorePacket* = 1;
- midiNoMorePacket* = 2;
- (* Driver calls *)
- midiOpenDriver* = 1;
- midiCloseDriver* = 2;
-
-
- TYPE
- MIDIPacket* = (*ΔΔPACKEDΔΔ*) RECORD
- flags*: Types.UInt8;
- len*: Types.UInt8;
- tStamp*: LONGINT;
- data*: ARRAY 249 (*ΔΔ[0..248]ΔΔ*) OF Types.UInt8;
- END;
-
- MIDIPacketPtr* = POINTER TO MIDIPacket;
-
- MIDIReadHookProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (myPacket: MIDIPacketPtr; myRefCon: LONGINT): INTEGER;
- MIDITimeProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (curTime: LONGINT; myRefCon: LONGINT);
- MIDIReadHookUPP* = Types.UniversalProcPtr;
- MIDITimeUPP* = Types.UniversalProcPtr;
-
- MIDIClkInfo* = RECORD
- syncType*: INTEGER; (*synchronization external/internal*)
- curTime*: LONGINT; (*current value of port's clock*)
- format*: INTEGER; (*time code format*)
- END;
-
- MIDIIDRec* = RECORD
- clientID*: Types.OSType;
- portID*: Types.OSType;
- END;
-
- MIDIPortInfo* = RECORD
- portType*: INTEGER; (*type of port*)
- timeBase*: MIDIIDRec; (*MIDIIDRec for time base*)
- numConnects*: INTEGER; (*number of connections*)
- cList*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF MIDIIDRec; (*ARRAY [1..numConnects] of MIDIIDRec*)
- END;
-
- MIDIPortInfoPtr* = POINTER TO MIDIPortInfo;
- MIDIPortInfoHdl* = HANDLE TO MIDIPortInfo(*ΔΔ POINTER TO MIDIPortInfoPtr*);
- MIDIPortInfoHandle* = HANDLE TO MIDIPortInfo(*ΔΔ POINTER TO MIDIPortInfoPtr*);
-
- MIDIPortParams* = RECORD
- portID*: Types.OSType; (*AIFF.ID of port, unique within client*)
- portType*: INTEGER; (*Type of port - input, output, time, etc.*)
- timeBase*: INTEGER; (*refnum of time base, 0 if none*)
- offsetTime*: LONGINT; (*offset for current time stamps*)
- readHook*: MIDIReadHookUPP; (*routine to call when input data is valid*)
- refCon*: LONGINT; (*refcon for port (for client use)*)
- initClock*: MIDIClkInfo; (*initial settings for a time base*)
- name*: Types.Str255; (*name of the port, This is a real live string, not a ptr.*)
- END;
-
- MIDIPortParamsPtr* = POINTER TO MIDIPortParams;
-
- MIDIIDList* = RECORD
- numIDs*: INTEGER;
- list*: ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF Types.OSType;
- END;
-
- MIDIIDListPtr* = POINTER TO MIDIIDList;
- MIDIIDListHdl* = HANDLE TO MIDIIDList (*ΔΔ POINTER TO MIDIIDListPtr*);
- MIDIIDListHandle* = HANDLE TO MIDIIDList (*ΔΔ POINTER TO MIDIIDListPtr*);
-
-
- (*•• PROCEDURE MIDIVersion*(): Types.NumVersion;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0000, 4, $A800;
- (*$END*)*)
- PROCEDURE MIDISignIn*(clientID: Types.OSType; refCon: LONGINT; icon: Types.Handle; name: Types.ConstStr255Param): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0004, 4, $A800;
- (*$END*)
- PROCEDURE MIDISignOut*(clientID: Types.OSType);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0008, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetClients*(): MIDIIDListHandle;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $000C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetClientName*(clientID: Types.OSType; VAR name: Types.Str255);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0010, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetClientName*(clientID: Types.OSType; name: Types.ConstStr255Param);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0014, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetPorts*(clientID: Types.OSType): MIDIIDListHandle;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0018, 4, $A800;
- (*$END*)
- PROCEDURE MIDIAddPort*(clientID: Types.OSType; BufSize: INTEGER; VAR refnum: INTEGER; init: MIDIPortParamsPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $001C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetPortInfo*(clientID: Types.OSType; portID: Types.OSType): MIDIPortInfoHandle;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0020, 4, $A800;
- (*$END*)
- PROCEDURE MIDIConnectData*(srcClID: Types.OSType; srcPortID: Types.OSType; dstClID: Types.OSType; dstPortID: Types.OSType): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0024, 4, $A800;
- (*$END*)
- PROCEDURE MIDIUnConnectData*(srcClID: Types.OSType; srcPortID: Types.OSType; dstClID: Types.OSType; dstPortID: Types.OSType): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0028, 4, $A800;
- (*$END*)
- PROCEDURE MIDIConnectTime*(srcClID: Types.OSType; srcPortID: Types.OSType; dstClID: Types.OSType; dstPortID: Types.OSType): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $002C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIUnConnectTime*(srcClID: Types.OSType; srcPortID: Types.OSType; dstClID: Types.OSType; dstPortID: Types.OSType): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0030, 4, $A800;
- (*$END*)
- PROCEDURE MIDIFlush*(refnum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0034, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetReadHook*(refnum: INTEGER): Types.ProcPtr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0038, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetReadHook*(refnum: INTEGER; hook: Types.ProcPtr);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $003C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetPortName*(clientID: Types.OSType; portID: Types.OSType; VAR name: Types.Str255);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0040, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetPortName*(clientID: Types.OSType; portID: Types.OSType; name: Types.ConstStr255Param);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0044, 4, $A800;
- (*$END*)
- PROCEDURE MIDIWakeUp*(refnum: INTEGER; time: LONGINT; period: LONGINT; timeProc: MIDITimeUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0048, 4, $A800;
- (*$END*)
- PROCEDURE MIDIRemovePort*(refnum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $004C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetSync*(refnum: INTEGER): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0050, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetSync*(refnum: INTEGER; sync: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0054, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetCurTime*(refnum: INTEGER): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0058, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetCurTime*(refnum: INTEGER; time: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $005C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIStartTime*(refnum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0060, 4, $A800;
- (*$END*)
- PROCEDURE MIDIStopTime*(refnum: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0064, 4, $A800;
- (*$END*)
- PROCEDURE MIDIPoll*(refnum: INTEGER; offsetTime: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0068, 4, $A800;
- (*$END*)
- PROCEDURE MIDIWritePacket*(refnum: INTEGER; packet: MIDIPacketPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $006C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIWorldChanged*(clientID: Types.OSType): BOOLEAN;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0070, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetOffsetTime*(refnum: INTEGER): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0074, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetOffsetTime*(refnum: INTEGER; offsetTime: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0078, 4, $A800;
- (*$END*)
- PROCEDURE MIDIConvertTime*(srcFormat: INTEGER; dstFormat: INTEGER; time: LONGINT): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $007C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetRefCon*(refnum: INTEGER): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0080, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetRefCon*(refnum: INTEGER; refCon: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0084, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetClRefCon*(clientID: Types.OSType): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0088, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetClRefCon*(clientID: Types.OSType; refCon: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $008C, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetTCFormat*(refnum: INTEGER): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0090, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetTCFormat*(refnum: INTEGER; format: INTEGER);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0094, 4, $A800;
- (*$END*)
- PROCEDURE MIDISetRunRate*(refnum: INTEGER; rate: INTEGER; time: LONGINT);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0098, 4, $A800;
- (*$END*)
- PROCEDURE MIDIGetClientIcon*(clientID: Types.OSType): Types.Handle;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $009C, 4, $A800;
- (*$END*)
- PROCEDURE SndDispVersion*(toolnum: INTEGER): LONGINT;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $203C, $0000, $0000, $A800;
- (*$END*)
- CONST
- uppMIDIReadHookProcInfo* = $000003E0; (* PROCEDURE (4 byte param, 4 byte param): 2 byte result; *)
- uppMIDITimeProcInfo* = $000003C0; (* PROCEDURE (4 byte param, 4 byte param); *)
-
- PROCEDURE NewMIDIReadHookProc*(userRoutine: MIDIReadHookProcPtr): MIDIReadHookUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE NewMIDITimeProc*(userRoutine: MIDITimeProcPtr): MIDITimeUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallMIDIReadHookProc*(myPacket: MIDIPacketPtr; myRefCon: LONGINT; userRoutine: MIDIReadHookUPP): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $4E90;
- (*$END*)
-
- PROCEDURE CallMIDITimeProc*(curTime: LONGINT; myRefCon: LONGINT; userRoutine: MIDITimeUPP);
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $4E90;
- (*$END*)
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END MIDI.
-